package com.sojson.util.txy.bean;

import java.util.List;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.sojson.base.impl.BaseUtilDto;
import com.sojson.config.exception.TransErrorCode;
import com.sojson.config.exception.bean.Status;
import com.sojson.util.txy.bean.child.TxyResultResponse;
import com.sojson.util.txy.bean.child.TxyTicketsResponse;

/**
 * 腾讯云接口响应Bean
 * 
 * @author liu
 * @date 2021-03-16
 */
public class TxyResponse extends BaseUtilDto {

    /***/
    private static final long serialVersionUID = -444894164284969796L;

    /** 接口调用凭证 */
    private String accessToken;
    /** 腾讯云调用JS接口的临时票据 */
    private List<TxyTicketsResponse> tickets;
    /** 凭证有效时间,单位: 秒 */
    private Integer expireIn;
    /** 响应对象 */
    private TxyResultResponse result;
    /** 错误码 */
    @JsonIgnore
    private String code;
    /** 错误信息 */
    @JsonIgnore
    private String msg;
    /** 统一状态Bean */
    private Status cusStatus;

    public TxyResponse() {}

    /**
     * 成功返回
     * 
     * @param code
     */
    public TxyResponse(Integer code) {
        this(code, null);
    }

    /**
     * 返回失败
     * 
     * @param code
     * @param msg
     */
    public TxyResponse(Integer code, String msg) {
        this(new Status(code, msg));
    }

    /**
     * 返回失败
     * 
     * @param transErrorCode
     */
    public TxyResponse(TransErrorCode transErrorCode) {
        this(new Status(transErrorCode.getCode(), transErrorCode.getMsg()));
    }

    public TxyResponse(Status status) {
        setCusStatus(status);
    }

    /**
     * 获取接口调用凭证
     * 
     * @return
     */
    public String getAccessToken() {
        return accessToken;
    }

    /**
     * 设置接口调用凭证
     * 
     * @param accessToken
     */
    @JsonProperty("access_token")
    @JSONField(name = "access_token")
    public void setAccessToken(String accessToken) {
        this.accessToken = accessToken;
    }

    /**
     * 获取微信调用JS接口的临时票据
     * 
     * @return
     */
    public List<TxyTicketsResponse> getTickets() {
        return tickets;
    }

    /**
     * 设置微信调用JS接口的临时票据
     * 
     * @param tickets
     */
    public void setTickets(List<TxyTicketsResponse> tickets) {
        this.tickets = tickets;
    }

    /**
     * 获取凭证有效时间,单位: 秒
     * 
     * @return
     */
    public Integer getExpireIn() {
        return expireIn;
    }

    /**
     * 设置凭证有效时间,单位: 秒
     * 
     * @param expiresIn
     */
    @JsonProperty("expire_in")
    @JSONField(name = "expire_in")
    public void setExpireIn(Integer expireIn) {
        this.expireIn = expireIn;
    }

    /**
     * 获取响应对象
     * 
     * @return
     */
    public TxyResultResponse getResult() {
        return result;
    }

    /**
     * 设置响应对象
     * 
     * @param result
     */
    public void setResult(TxyResultResponse result) {
        this.result = result;
    }

    /**
     * 获取错误码
     * 
     * @return
     */
    public String getCode() {
        return code;
    }

    /**
     * 设置错误码
     * 
     * @param code
     */
    public void setCode(String code) {
        this.code = code;
    }

    /**
     * 获取错误信息
     * 
     * @return
     */
    public String getMsg() {
        return msg;
    }

    /**
     * 设置错误信息
     * 
     * @param msg
     */
    public void setMsg(String msg) {
        this.msg = msg;
    }

    /**
     * 获取统一状态Bean
     * 
     * @return
     */
    public Status getCusStatus() {
        return cusStatus;
    }

    /**
     * 设置统一状态Bean
     * 
     * @param status
     */
    public void setCusStatus(Status cusStatus) {
        this.cusStatus = cusStatus;
    }

}